package com.itstyle.seckill.topic.zk;

/**
 * @Auther: liuwenxiang
 * @Date: 2020/3/13 00:05
 * @Description:
 * 原理：
 * 在一个根节点下，创建"临时""有序"节点，
 * (Zookeeper的每一个节点，都是一个天然的顺序发号器)
 * 当创建的节点的序号是最小的，代表该线程获取锁
 * 没有获取到锁，就"监听前一个节点的信息"
 * 获取锁的节点完成业务，删除临时节点，即释放锁
 * 1.临时(容易释放锁) 有序(好进行比较)
 * 2.所有竞争锁的节点在同一个根节点下，且zk保证新加的节点序号自增
 * 3.竞争锁时，程序会实现节点id比较
 * 4.每个节点会监听他前一个节点(没有获取锁就是阻塞，等待前一个节点唤醒)
 */
public interface Lock {
    boolean lock() throws Exception;
    boolean unlock();
}
